package com.yt.system.service.impl;

import com.yt.system.dao.TaskMapper;
import com.yt.system.dao.UserMapper;
import com.yt.system.domain.Task;
import com.yt.system.service.TaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 高铭
 * @date 2019/9/18 - 17:18
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class TaskServiceImpl implements TaskService {
    @Autowired
    private TaskMapper taskMapper;

    /**
     * 用户添加任务
     * @param task
     */
    @Override
    public void insert(Task task) {
        taskMapper.insert(task);
    }

    /**
     * 用户提交任务，修改该任务的状态
     * @param tid
     */
    @Override
    public void updateTaskStatusByTid(Integer tid,Integer tStatus) {
        taskMapper.updateTaskByTid(tid,tStatus);
    }

    /**
     * 根据tid查找具体的任务
     * @param tid
     * @return
     */
    @Override
    public Task findTaskById(Integer tid) {
        return taskMapper.findTaskById(tid);
    }

    /**
     * 查询用户个人当天的任务
     * @param aid
     * @return
     */
    @Override
    public Map<String,Object> findUserTaskByAid(Integer aid,String tStartTime) {
        Map<String,Object> userTaskMap = new HashMap<>();
        List<Task> userTaskList = taskMapper.findUserTaskByAid(aid,tStartTime);
        //用大的集合添加用户个人的任务
        if(userTaskList.size() == 0){
            userTaskMap.put("userTaskMsg","当前用户当天没有任务");
        }else {
            userTaskMap.put("userTaskMsg","当前用户当天所有任务如下");
            userTaskMap.put("userTaskList",userTaskList);
        }
        return userTaskMap;
    }

    /**
     * 查询当前用户所在组别的其他组员的当天任务
     * @param aid
     * @return
     */
    @Override
    public Map<String,Object> findTeamOtherTask(Integer aid,String tStartTime) {
        Map<String,Object> teamOtherTaskMap = new HashMap<>();
        List<Task> teamOtherTask = taskMapper.findTeamOtherTask(aid,tStartTime);
        if(teamOtherTask.size() == 0){
            teamOtherTaskMap.put("teamOtherTask",null);
        }else{
            teamOtherTaskMap.put("teamOtherTask",teamOtherTask);
        }
        return teamOtherTaskMap;
    }

    /**
     * 组长审核用户todo任务不通过
     * @param task
     */
    @Override
    public void updateTask(Task task) {
        taskMapper.updateTask(task);
    }

    /**
     * 更新任务信息
     * @param task
     */
    @Override
    public void updateByPrimaryKeySelective(Task task) {
        taskMapper.updateByPrimaryKeySelective(task);
    }

}
